package com.myblog.demo.mapper;

import com.myblog.demo.entity.ArticleInfo;
import com.myblog.demo.entity.UserInfo;
import com.myblog.demo.entity.vo.ArticleInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ArticleMapper {
    // 添加文章
    int add(ArticleInfo articleInfo);


    //博客修改需要根据文章id查询对应文章，并且要校验文章的作者归属
    ArticleInfo getDetailByIdAndUid(@Param("id") Integer id, @Param("uid") Integer uid);

    // 修改博客
    int update(ArticleInfo articleInfo);

    // 查看文章详情
    ArticleInfoVO getDetailById(@Param("id") Integer id);

    // 增加阅读量
    int addRCount(@Param("id") Integer id);

    // 获取当前用户的博客列表
    List<ArticleInfo> getListByUid(@Param("uid") Integer uid);

    // 通过id删除指定文章, 并且需要鉴权
    int delByIdAndUid(@Param("id") Integer id, @Param("uid") Integer uid);

    // 分页查询
    List<ArticleInfo> getListByPage(@Param("pageSize") Integer pageSize,
                                    @Param("offset") Integer offset);

    // 查询文章总数
    int getCount();

    // 查询指定用户的文章总数
    int getCountByUsername(@Param("username") String username);

    // 添加草稿
    int addDraft(ArticleInfo articleInfo);

    // 保存草稿
    int saveDraft(ArticleInfo articleInfo);

    // 获取草稿列表
     List<ArticleInfo> getDraftList(@Param("uid") Integer uid);

     // 根据文章id获取对应作者信息
    UserInfo getUserInfoByArtId(@Param("id") Integer id);

    // 根据文章标题模糊搜索
    List<ArticleInfo> getListByLikeTitle(@Param("key") String key);

    // 获得某种作者的所有文章阅读量
    int getTotalRCountByUId(@Param("uid") Integer uid);

}
